package com.gitee.wsl.mathematics.coordinate.d2

import com.gitee.wsl.mathematics.coordinate.MutableCoordinate
import com.gitee.wsl.mathematics.coordinate.d3.MutableCoordinate3
import com.gitee.wsl.mathematics.vector.vec2.MutableVector2
import com.gitee.wsl.mathematics.vector.vec2.MutableVector2D
import com.gitee.wsl.mathematics.vector.vec2.MutableVector2F


typealias MutablePoint2D = MutableCoordinate2<Double,*>
typealias MutablePoint2F = MutableCoordinate2<Float,*>
typealias MutablePoint2<T,V> = MutableCoordinate2<T,V>

interface MutableCoordinate2<T:Number,V: Coordinate2<T, V>>: Coordinate2<T, V>, MutableCoordinate<T, V>,
    MutableVector2<T, V> {
    //override val vec2: MutableCoordinate2<T, *>
    override val vec3: MutableCoordinate3<T, *>
}

interface  MutableCoordinate2F<V: Coordinate2<Float, V>> : MutableCoordinate2<Float, V>, MutableVector2F<V>{

}

interface  MutableCoordinate2D<V: Coordinate2<Double, V>> : MutableCoordinate2<Double, V>, MutableVector2D<V>{


}